import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { UserInfo } from "@/types/api/other/index";

/**该仓库的类型 */
export type UserState = UserInfo
/**仓库初始值 */
const initialState: UserState = {
    id: 0,
    name: "",
    admin: false
};

/**user的slice  可以理解为redux的一个数据模块 */
export const userSlice = createSlice({
    name: "user",// 模块名
    initialState,// 模块名
    reducers: {//操作，是一个对象, 对象的key是字符串(方法名), value是一个方法(可以理解为vuex中的一个action), 这个方法接受一个state参数, 改变这个参数的值会更新我们所有用到这个state的地方的view
        /**设置用户信息 */
        setUser(state, actions: PayloadAction<UserInfo>) {
            Object.assign(state, actions.payload)
        }
    },
});
export const { setUser } = userSlice.actions
export default userSlice.reducer //暴露出reducer, 用于在store总模块中集成
